<?php
/**
 * Created by PhpStorm.
 * User: DELL
 * Date: 2018/7/12
 * Time: 19:52
 */
namespace  app\common\lib\exception;
use think\Exception;
use think\exception\Handle;

/**
 * 这个类的作用是重写TP的自带异常
 * Class ApiHandleException
 * @package app\common\lib\exception
 */
class ApiHandleException extends Handle
{

    /**
     * 定义httpcode 状态码
     * @var int
     */
    public $httpCode = 500;

    /**
     * 重写render方法,即自己渲染抛出的异常
     * @param \Exception $e
     * @return array|\think\Response
     */
    public function render(\Exception $e)
    {
        //做这个判断的目的是为了给服务端工程师看的,更好的检测报错的原因
        //项目上线后,这个app_debug是要关闭的,返回的错误信息就不能以服务端的错误信息格式了
        if(config('app_debug') == true)
        {
            return parent::render($e);
        }

        //如果这个异常是我们自定义的异常类
        if($e instanceof ApiException)
        {
            //那么这个http码就是自定义的传过来的http码
            $this->httpCode = $e->httpCode;
        }
        return show(0,$e->getMessage(),[],$this->httpCode);
    }
}